iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0

https://ithelp.ithome.com.tw/upload/images/20260807/20181284YtmDSMqOdW.png

昨天講的是怎麼把 claude 當同事用。今天往外一層,講最外面那道門:一個網域、一個固定 IP,以及要不要建自己的 DNS。

用 AI ,就是要提供服務,要提供服務,就必須聯網,無論是網站,app,mail,n8n ...... 都是網路服務,要讓人可以找到你的服務,知道你的網站在哪。你可以用 google cloud,可以用 AWS,可以租個虛擬主機,可以用 git hub,方案很多。我要的是:如果第三方服務中斷,我所提供的服務要能繼續。把你的服務,託管在別人家裡,他一當機,你除了等待,什麼都不能做。所以,自架服務 ( self-hosted) 成為唯一選擇。當然,還是得依賴網路供應商 (中華電信)這個第三方,不過這個如果斷了,我想也沒什麼人可以使用你的服務了。

再來,在 AI 的世代,弄個 wordpress, ghost 之類的網站,已經是基本的了。我們會有:TTS,STT,OCR,RAG,Romotion ..... 各式各樣的服務,每個服務,都是一個網站,所以需要許多網域名,如: tts.abc.com,stt.abc.com,rag.abc.com,remotion.abc.com ..... 這時,必須要有你自己的網域名稱,以及自己管理。所以,你必須有個固定IP。固定IP跟網域的成本低,不必浪費時間在 DDNS。

在台灣,大部分人自架服務的起點很單純:跟中華電信申請光世代,選有固定 IP 的方案,撥接上去拿到固定 IP。網域名稱去 Cloudflare 買,在 Cloudflare 的 DNS 面板加記錄,指向那個 IP。完成。這條路我真心推薦。免費、改記錄即時生效、附帶擋 DDoS,還能順便當內容快取。如何買網域名,如何設定?問AI。

但我走的路不一樣。我的網域註冊商是 hi-net,但我沒有用 hi-net 的 DNS。我把網域的名稱伺服器(NS)委派給自己家裡的兩台機器 —— 也就是說,全世界要查我的網域,最後都會問到我自己的機器。為甚麼要這麼麻煩?還是那句話:如果第三方服務中斷,我所提供的服務要能繼續。 ----- cloudflare 有沒有斷過?google , aws 有沒有斷過?非常稀有,但,sorry,有 斷 過。斷了,DNS 就解析不了,你的服務,人家就找不到了。此時,你能做甚麼?等,等,等 .......

自架 DNS 門檻不在技術,在於一個很物理的東西:你需要第二個固定 IP。因為 DNS 服務器照規矩要有兩台,而且不能是同一個位址,一台掛了另一台還要能回答。一個 IP 就是做不到。所以真正的分水嶺不是「你會不會架」,是「你有沒有第二個固定 IP」。

如果你只有一個固定 IP,又想自己掌握 zone 檔,其實還有第三條路:自己架一台主要的 DNS,然後去申請一家免費的次要 DNS 服務當備援 (HE.net)。這樣你湊滿兩台 NS 的要求,而且兩台之間有真正的區域轉送(zone transfer),主要那台改了,次要那台自動同步。說老實話,這比我現在的做法還好。我的兩台是各自獨立維護的,沒有自動同步 —— 這就是下面第一個坑的來源。

兩台各改各的,漏一台就間歇消失。我那兩台沒有做區域轉送,兩邊的 zone 是手動各維護一份。每加一個子網域,兩台都要各加一次。有一次上線新服務,我只在其中一台加了記錄。結果不是「不能用」,是時好時壞 —— 查詢隨機落到哪一台,落到沒加的那台就查無此域。最麻煩的是憑證。自動簽憑證的服務會來查一次,剛好查到沒加的那台,直接拒發。連拒兩次我才發現只加了一台。間歇性故障永遠比全壞更難查,因為它會給你「有時候是好的」這種假訊號。

更早之前,我家的 DNS 還當過一陣子的攻擊放大器。自架 DNS 有一個預設值很危險:它會不會回答不屬於自己的查詢?如果會,你就變成一台開放遞迴解析器(open recursive resolver)。別人送一個很小的查詢過來,你回一個大很多的答案回去,而且來源位址是可以偽造的,於是攻擊者可以借你的機器去轟炸別人。一個小查詢換十幾倍大的回應,這種機器就是免費的放大器。我這台曾經就是。

同一台機器上還有一個更直接的:整份網域記錄可以被一次抄光。區域轉送(AXFR)沒有限制來源,任何人下一個指令,就能把我整個 zone 的全部記錄一次抄走,包含所有內部服務的子網域名稱。等於把服務清單公開送人。修法是在 DNS 設定裡把「允許轄區傳輸」限定成只給我自己的另一台 NS 和備份主機。

放大器和 AXFR 這兩件事有個共同點:從內部測完全測不出來。我叫 claude 去檢查,它從我的 HQ 那台機器發查詢,回報一切正常。 claude 沒有錯,它問的方式是對的 —— 但我家的網路會把往外的請求繞回自己身上,所以它問的其實是「從裡面看,我自己正不正常」,而不是「從網路上看,我開了什麼門」。真正找到洞的方法,是從外面的線路打進來:我用另一條撥接線當作外部觀測點,從那裡對自己的 IP 發查詢,兩個問題才現形。這件事 claude 想不到,因為它不知道我家網路的物理拓撲長什麼樣。它知道怎麼問,但不知道該站在哪裡問。

講到 DNS 安全,很多人會想「AXFR 走 TCP,那我把 TCP 的 53 埠擋掉不就好了」。千萬不要。郵件的 DKIM 簽章是一筆 TXT 記錄,而我這筆的回應大小是 508 個位元組,UDP 回應的上限是 512。只差四個位元組。再長一點點就必須改走 TCP。這時候如果你把 TCP 擋掉,DKIM 驗證會靜默失敗:信照樣寄出去、看起來一切正常,只是收信方那邊驗不過,你的寄件信譽開始慢性下滑,而且沒有任何錯誤訊息。擋 AXFR 要在 DNS 服務本身做,不是在防火牆上做。

這些,都是 claude 幫我找到,修正的。

簡單講:多數人用 Cloudflare 省心,我為了掌控權,要付出額外的代價,而聰明人會用免費備援來模擬高可用。但無論你選哪條路,記得用外部的眼睛來看你家 DNS 的健康狀況,因為 claude 站在屋子裡面,看不見外牆上哪一扇窗戶是開的。

明天,Proxmox 裝上去 —— 裝完之後我第一個要裝的,就是 claude code。


上一篇
D02 AI 的記憶會過期,而且它不知道自己過期了
系列文
一個人的 IT 部門:用 Claude Code 從裸機到一整座 AI 機房3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言